package org.example.orm;

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 * @author hsc
 * @date 2024-02-17
 * @Description 专门用于读取配置文件的类
 */
public final class ConfigurationReader {
    //属性----缓存，临时存储配置文件中的信息
    private static Map<String, String> map = new HashMap<>();

    static {
        //加载流文件
        try {
            //在当前类加载的时候，一次性读取配置文件中的所有数据，将其存入map中
            Properties properties = new Properties();
            //获取输入流
            InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("configuration.properties");
            properties.load(inputStream);
            //读取文件中全部的信息，存入map中
            Enumeration en = properties.propertyNames(); //获取全部的key      keySet
            //可以使用en来遍历全部的key，使用方式类似Iterator
            while (en.hasMoreElements()) {
                //获取文件中key值
                String key = (String) en.nextElement();
                //获取文件中的value值
                String value = properties.getProperty(key);
                //将文件中对应的信息存在map中
                map.put(key, value);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 提供一个方法，从静态的集合中获取想要的信息
     * @param key
     * @return
     */
    public static String getValue(String key) {
        return map.get(key);
    }
}
